The invention relates to network computing and computer connectivity and more specifically to improving performance of multi-user applications for networks.
With the advances in network computing technologies, there is an increasing emphasis in the software industry on software applications that take advantage of the power of network computing to enable users to interact and share information over computer networks. In particular, the prominence of the Internet and applications that take advantage of the Internet have grown dramatically. With this increased emphasis on network computing and the Internet, multi-user applications have become more popular. A multi-user application refers to an application in which two or more users interact over a network. Some examples of multi-user applications include multi-player games, video conferencing and groupware.
While the improvements in network computing have increased the performance of multi-user applications, today""s networking technology, especially in the context of the Internet, still has performance limitations. One well-documented limitation of networks, and especially massive wide-area networks like the Internist, is the latency incurred in passing messages among participants of a multi-user application. In interactive applications, such as multi-player games, it is particularly important to minimize the delay in passing messages back and forth between the users"" computers.
Another limitation of network computing, especially in the context of highly interactive applications, is the inefficient use of transmission bandwidth of popular network communication protocols. Standard network communication protocols like TCP/IP send data over a network by forming packets to carry portions of the data. Each packet includes layers of address information. In networking applications where transmission bandwidth is limited, the address information further limits the bandwidth available for transferring data between computers.
To illustrate these issues, it his helpful to consider an example of a multi-user application on large, wide area network, such as the Internet. To join into a multi-user application, each participating user establishes a connection between the user""s computer and a network interconnecting the users"" computers. Each computer can connect to the network through a modem via a telephone line or a network adapter via a local area network (LAN). FIG. 1 illustrates an example of a network connection formed via the Internet where the user typically establishes a dial up modem connection with an Internet Service Provider.
In a multi-user application session, each user may be required to launch a copy of the application on the user""s computer. Alternatively, the multi-user application may run on a central computer on the network with which each user of the multi-user application is in communication.
The computers participating in the multi-user application communicate according to a network communication protocol. Standard communication protocols, such as TCP/IP, transfer data in packets. In TCP/IP, the packet is marked with a sequence number, the address of the recipient, and the address of the sender. This addressing information is common in standard protocols so that the protocol can be used for a variety of applications and can be used to address a large number of users.
The transmission delays and inefficiencies of the transmission protocols used on the Internet degrade performance of multi-user applications, and in particular, multi-player games. To address this problem, multi-player games are implemented on dedicated game servers that remote users can connect to via a direct modem-to-modem connection rather than via the Internet. While these game servers provide enhanced performance, they make it more difficult to coordinate multi-player game sessions because each player must know when to connect to the server and what protocol to use.
The Internet can serve as an excellent forum to bring users together. To coordinate a multi-user application session, participants in the session can meet in a virtual lobby hosted on the Internet (or some other wide area network) to establish the time and place for the session. A virtual lobby, typically hosted on a server called a lobby server on the Internet, is a form of a chat room. Users typically navigate to the virtual lobby with a network browser. Once at the virtual lobby, a user interacts with other users by entering text or cursor device input via the graphical user interface (GUY) of the browser. For example, players of a multi-player game might xe2x80x9cmeetxe2x80x9d in an Internet game lobby to plan an immediate multi-player game session on a local server outside of the Internet. Lobbies, with the accessibility advantages of wide area networks like the Internet, can bring thousands of users together to plan multi-user application sessions on smaller networks. Switching to these smaller networks. users of multi-user applications enjoy more efficient communication.
FIG. 1 shows a diagram of the Internet to illustrate the difference between game servers on the Internet and dedicated game servers independent from the Internet. Users 20, 22, 24 of multi-user applications can connect to the Internet through Internet service providers 30, 32, 34, meet in an Internet lobby 36, plan a multi-user application session, and then transfer to the application server 38 hosting the application session without disconnecting from the Internet. However, the performance of this type of multi-user application session is not optimal because a large portion of a packet for a wide area network protocol is devoted to addressing. Further, message packets are routed through multiple Internet routers 40, 41, 42, 43, 44, 45 as well as an Internet Service Provider before being reassembled for each user. The resulting communication is slow and unpredictable, especially for real-time multi-user applications requiring quick responses, such as multi-player games. Such multi-user application sessions may be required to slow down to accommodate the inefficient communication.
A smoother, faster multi-user application session can be achieved by conducting the session on a dedicated multi-user application hub server 50. Note that the direct connection to the server 50 bypasses the Internet. In a game session on the server, messages are routed to the hub, and then to another user 20, 22, 24. Message packets used to communicate through the smaller network need less space per packet for addressing. The resulting communication is more efficient than Internet communication.
The efficiency advantages of current systems using both lobbies and dedicated application servers are balanced by the disadvantages of having to switch manually between multiple communication protocols and links.
FIG. 2 shows the steps taken by a user following current methods of switching between a lobby and a multi-user application session. Under existing systems using both a lobby and a dedicated application server, a user must first choose a protocol (60) and establish a connection (61) to a wide area network hosting a lobby, or directly dial a computer hosting a lobby. The user must then find the lobby on the lobby server or network (62).
After planning a multi-user application session with other users in the lobby (64), each user must then disconnect the communication link with the lobby (66), noting the information required to connect to the dedicated application server. This information may include protocol information, a network address, and/or a telephone number.
Next, each user must connect to the dedicated application server using the information from the lobby. The protocol followed when establishing this new connection may differ from the protocol used to connect to the lobby. If so, the user must select the proper protocol to use (68) and then make the connection (70). Each user must also manually launch a copy of the multi-user application that runs on the user""s personal computer (72). The step of manually launching the copy of the application is avoided in a currently available game programming interface called Direct play from Microsoft. However, this is limited to cases where the multi-user application is executed on the existing communication protocol.
Once the users of the multi-user application are connected to the network of the dedicated application server, the session commences (74). Information is routed from one user or application to the other users or applications through the dedicated application server.
When the session is finished, each user terminates the application (76) and disconnects from the dedicated application server (78). To reconnect to the original lobby server, each user must reconnect (61) to the wide area network and visit the lobby, or recall the protocol and phone number for a dial-up lobby.
Current systems using both a lobby and a dedicated application server require the user to manually connect and disconnect numerous times. Users frequently must remember protocol and address information for the various connections.
Some application servers provide dedicated lobby servers that do not require a protocol switch from the lobby to the game application. While such dedicated lobby servers do not require the user to keep track of information needed to switch protocols from the lobby to the game application, they are typically specific to one game application. In addition, they are not flexible enough to deal with cases where a protocol change might be necessary to access a computer on another network or to improve performance.
The invention provides a method for changing communication protocols on a user""s local computer from a remote computer. This method is xe2x80x9ctransparentxe2x80x9d to the user of the local computer because the remote computer sends connectivity information that enables a software module on the local computer to switch communication protocols without prompting the user for connectivity information. In fact, the user does not have to enter any input to change the protocol. An additional advantage of the invention is that it can be implemented so that the application program or programs running on the local computer also do not need to control changes in the communication protocols that they use to communicate with remote computers. For example, in the context of a multi-user application, the version of the multi-user application running on the user""s computer does not have to handle the details of switching protocols or restoring the state of a prior connection when the multi-user application session is over.
In one implementation, the method for changing protocols is executed in a software module called a connectivity application programming interface (API). The connectivity API runs on the local computer as well as the remote computers. This module acts as an interface between application programs, on one side, and programs that implement communication protocols called xe2x80x9cservice providers,xe2x80x9d on the other side. Applications and other programs can establish a connection with a remote computer by invoking the services of the connectivity API and passing it a connectivity address. The connectivity address is a data structure with encapsulated address information including an identifier of a service provider and other connectivity information such as a phone number, IP address, COM port and modem settings, etc. In response to receiving the connectivity address, the connectivity API sets up a new connection via a service provider, while saving the connection state of an existing connection. At the completion of a session, the connectivity API can be invoked to restore the state of the previous connection. These features of the connectivity API enable it to switch and restore the state of a remote connection transparently to the end-user and local applications.
In one particular implementation, a remote computer changes the protocol on a user""s local computer by invoking the connectivity API on the remote computer to send a connectivity address to the connectivity API on the local computer. In response to receiving the connectivity address, the local connectivity API stores the state of the existing connection and loads a service provider to set-up a new connection. The local connectivity API provides the service provider with the connectivity information necessary to establish a new connection. The remote computer can also restore the state of a previous connection by instructing the local connectivity API to recall the stored connectivity state of a previous connection and use this information to restore a connection using a different service provider.
Additional features and advantages of the invention will become more apparent from the following detailed description and the accompanying drawings.